home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 9260 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.7 KB

  1. Path: solon.com!not-for-mail
  2. From: seebs@solutions.solon.com (Peter Seebach)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Tradition or what?
  5. Date: 8 Mar 1996 17:57:01 -0600
  6. Organization: Usenet Fact Police (Undercover)
  7. Message-ID: <4hqhge$2gu@solutions.solon.com>
  8. References: <4g0elg$mdr@redstone.interpath.net> <4hpd8a$d70@alterdial.UU.NET> <1996Mar8.153250.115645@kuhub.cc.ukans.edu>
  9. NNTP-Posting-Host: solutions.solon.com
  10.  
  11. In article <1996Mar8.153250.115645@kuhub.cc.ukans.edu>,
  12.  <anh@kuhub.cc.ukans.edu> wrote:
  13. >Well, I found one good use of magic numbers such as when one needs a 
  14. >localized temporary buffer of data.
  15.  
  16. >int func()
  17. >{
  18. >    FILE *fp;
  19. >    char buf[15+1];
  20.  
  21. >    ...
  22.  
  23. >    fgets(buf,15,fp);
  24. >}
  25.  
  26. >Well, if I know the data is always going to be less than 15 or whatever, 
  27. >there is really no need to use a #define here.
  28.  
  29. However, the +1 is redundant; fgets will read one *less* than the specified
  30. number of bytes, and will then use the last one for a trailing nul.
  31.  
  32. Anyway, I'd rather see a 15 in both places, and over that, I'd prefer to
  33. see a #define or enum used.  If you know the data is always going to be
  34. less than 15 chars, you know *why* it will be less than 15 chars, and it is
  35. because of some attribute of the data, which you need to describe here.
  36. So use a symbolic name, so that later, if the "object which can never be
  37. more than 14 chars" becomes an "object which can never be more than 28
  38. chars", you know to come looking for it here.
  39.  
  40. -s
  41. -- 
  42. Peter Seebach - seebs@solon.com - Copyright 1996 Peter Seebach.
  43. C/Unix wizard -- C/Unix questions? Send mail for help.  No, really!
  44. FUCK the communications decency act.  Goddamned government.  [literally.]
  45. The *other* C FAQ - http://www.solon.com/~seebs/c/c-iaq.html
  46.